package cn.ym.mall.dao;

import cn.ym.mall.entity.Goods;

import java.sql.SQLException;
import java.util.List;

/**
 * 商品dao
 */
public interface GoodsDao {

    /**
     * 分页查询所有商品
     * @return
     * @throws SQLException
     */
    public List<Goods> getAll() throws SQLException;

    /**
     * 分页查询所有商品
     * @param pageNo
     * @param pageSize
     * @return
     * @throws SQLException
     */
    public List<Goods> getAll(Integer pageNo, Integer pageSize) throws SQLException;

    /**
     * 查询商品数
     * @return
     */
    public long getCount() throws SQLException;

    /**
     * 分页查询分类所有商品
     * @param pageNo
     * @param pageSize
     * @return
     * @throws SQLException
     */
    public List<Goods> getGoodsByBid(Integer bid, Integer pageNo, Integer pageSize) throws SQLException;

    /**
     * 查询分类商品数
     * @return
     */
    public long getCountByBid(Integer bid) throws SQLException;

    /**
     * 分页查询品牌所有商品
     * @param pageNo
     * @param pageSize
     * @return
     * @throws SQLException
     */
    public List<Goods> getGoodsByTid(Integer tid, Integer pageNo, Integer pageSize) throws SQLException;

    /**
     * 查询品牌商品数
     * @return
     */
    public long getCountByTid(Integer tid) throws SQLException;

    /**
     * 分页查询商店所有商品
     * @param sid
     * @param pageNo
     * @param pageSize
     * @return
     * @throws SQLException
     */
    public List<Goods> getGoodsBySid(Integer sid, Integer pageNo, Integer pageSize) throws SQLException;

    /**
     * 查询商店商品数
     * @return
     */
    public long getCountBySid(Integer sid) throws SQLException;

    /**
     * 通过名字模糊查询商品
     * @param name
     * @return
     */
    public List<Goods> getGoodsBySname(String name, Integer pageNo, Integer pageSize);

    /**
     * 通过名字模糊查询商品
     * @return
     */
    public long getCountBySname(String name) throws SQLException;

    /**
     * 通过id查商品
     * @return
     * @throws SQLException
     */
    public Goods getGoodsByGid(Integer gid) throws SQLException;

    /**
     * 添加商品
     * @param goods
     * @return
     */
    public int add(Goods goods);

    /**
     * 修改商品
     * @param goods
     * @return
     */
    public int update(Goods goods);

    /**
     * 删除商品
     * @param gid
     * @return
     */
    public int delete(Integer gid);

}
